e[Single]
#ScriptVersion[2]
#Title[SXy1]

script_enemy_main{
	
	@Initialize{
		//f[^
		InitializeData();
		InitializeAction();
		
		//XyJCfbNX
		spellNumber = "2";
		
		//XyJ1₵Ď擾
		SetSpellData( player, difficult, spellNumber, "Parent" );
		spellPC = GetSpellData( player, difficult, spellNumber );
		
		//XyJwiRg[^XNN
		BackGroundControl();
		
		//Ctݒ
		SetLife( 1000 );
		//ʒuݒ
		Warp( CenterX, MinY + 120, 40 );
		//_[W[gݒ
		SetDamageRate( 25, 25 );
		//蔻ݒ
		SetCollisionEx( 32, 16, false, 180 );
		//Gl~[}[J[
		SetEnemyMarker( true );
		
		//C^XNJn
		TMain();
	}
	
	@MainLoop{
		//yield[v
		yield;
	}
	
	@DrawLoop{
		//{X摜`
		SetGraphicScale( xscale, yscale );
		DrawBoss( imgBoss );
		
		//bXyJ`
		DrawText( IntToString( spellPC[ 0 ] ), 340, 64, 12, 255 );
		DrawText( "/",                         360, 64, 12, 255 );
		DrawText( IntToString( spellPC[ 1 ] ), 380, 64, 12, 255 );
	}
	
	@BackGround{
		//wi`ݒ莞̂ݔwi`
		if( isDrawBackGround ){
			BackGroundDraw();
		}
	}
	
	@Finalize{
		//ŏI
		FinalizeData();
		
		//XyJ擾Ăꍇ擾vX
		if( GotSpellCardBonus() ){
			SetSpellData( player, difficult, spellNumber, "Child" );
		}
	}
	
	/**
	 * C^XN
	 */
	task TMain(){
		//60F(1b)҂
		FWait( 60 );
		
		//XyJ錾
		DeclareSpell();
		
		//U
		alternative( difficult )
			case( "Easy" ){
				Atack_Easy();
			}
			case( "Normal" ){
				Atack_Normal();
			}
			case( "Panic" ){
				Atack_Panic();
			}
	}
	
	/**
	 * XyJ錾
	 */
	function DeclareSpell(){
		//XyJ擾
		let spellname = GetSpellName( player, difficult, spellNumber );
		
		//XRAݒ
		SetScore( 20000000 );
		//Ԑݒ
		SetTimer( 44 );
		//JbgC
		CutIn( KOUMA, spellname, NULL, 0, 0, 0, 0 );
		//XyJ
		PlaySE( seUseSpell );
		//XyANV
		SetAction( ACT_SPELL, 120 );
		//120F(2b)҂
		FWait( 120 );
	}
	
	/**
	 * Easy UC^XN
	 */
	task Atack_Easy(){
	}
	
	/**
	 * Normal UC^XN
	 */
	task Atack_Normal(){
	}
	
	/**
	 * Panic UC^XN
	 */
	task Atack_Panic(){
		let turn = 1;
		let x = 0;
		let y = 0;
		let angle = 0;
		let rad = 0;
		
		loop{
			x = CenterX + rand( 200, 240 ) * turn;
			y = -212 + rand( -24, 24 );
			angle = 90 + turn * 70 + rand( -10, 10 );
			rad = rand( 420, 460 );
			
			ascent( i in 0..8 ){
				Atack1( GetGapX( x, rad, angle ) + rand( -32, 32 ), GetGapY( y, rad, angle ) + rand( -32, 32 ), 80, 10 );
				angle -= rand( 8, 12 ) * turn;
				FWait( 7 );
				if( i == 4 ){
					let ex = GetPlayerX() + rand( -64, 64 );
					if( ex < MinX + 48 ){
						ex = MinX + 48;
					}else if( ex > MaxX - 48 ){
						ex = MaxX - 48;
					}
					let ey = MinY + 120 + rand( -12, 12 );
					Warp( ex, ey, 40 );
				}
			}
			
			turn *= -1;
			FWait( 30 );
			SetAction( ACT_SHOT_A, 60 );
			FWait( 30 );
			
			ascent( i in 0..54 ){
				ascent( j in 0..4 ){
					CreateShotA( 1, GetX(), GetY(), 20 );
					SetShotDataA( 1, 0, 1.6 + j * 0.6, i * 360 / 54, 0.4 * ( (j % 2) * 2 - 1 ), 0, 99, US_BALL_M_PURPLE );
					FireShot( 1 );
				}
			}
			
			FWait( 40 );
		}
	}
	
	/**
	 * e^XN1
	 */
	task Atack1( x, y, way, flower ){
		let speed = 0;
		let flowerwaynum = way / flower;
		let angle = rand( 0, 360 );
		
		if ( isDrawEffect ) {
			Explosion01( x, y, 16, 0.2, 60 );
		}
		ascent( i in 0..way ){
			speed = 1 + absolute( ( i % flower ) - ( flower / 2 ) ) * ( 3.2 / flowerwaynum );
			CreateShot01( x, y, speed, angle + i * 360 / way, US_RICE_M_GREEN, 40 );
		}
	}
	
	//XNvg̃CN[h
	#include_function ".\initialize.txt"
}